from typing import List, Optional, Dict, Generic, TypeVar
from pydantic import BaseModel
from datetime import datetime
from config.constants import ROLE_USER, ROLE_ASSISTANT

# 通用响应模型 - 新增部分
T = TypeVar('T')
class ApiResponse(BaseModel, Generic[T]):
    """统一API响应格式，适配前端拦截器"""
    code: int = 200  # 状态码：200成功，其他为错误
    data: T  # 实际数据
    msg: str = "success"  # 提示信息

# 原有模型保持不变
class SessionResponse(BaseModel):
    """会话信息响应模型"""
    session_id: str  # 会话唯一ID
    user_id: str     # 所属用户ID
    title: str       # 会话标题
    created_at: datetime  # 会话创建时间
    updated_at: datetime  # 会话最后更新时间

    class Config:
        from_attributes = True

class ChatHistoryItem(BaseModel):
    """单条对话历史响应模型"""
    message_id: str          # 消息唯一ID
    session_id: str          # 所属会话ID
    user_id: str             # 所属用户ID
    role: str                # 角色（user/assistant）
    content: str             # 消息内容
    created_at: datetime     # 消息创建时间

    class Config:
        from_attributes = True

class ChatHistoryResponse(BaseModel):
    """对话历史列表响应模型"""
    session_id: str
    history: List[ChatHistoryItem]
    total_count: int  # 历史消息总数
